# ———————————————————————–
# <copyright file="Install.ps1" company="The MITRE Corporation">
#    Copyright (c) 2010 The MITRE Corporation. All rights reserved.
#    Licensed under the Apache License, Version 2.0 (the "License");
#    you may not use this file except in compliance with the License.
#    You may obtain a copy of the License at
#    http:#www.apache.org/licenses/LICENSE-2.0
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
# </copyright>
# ———————————————————————–
################################################/
# Install.ps1 - Main Install Script for IC.NET
# Project: IC.NET Installer
# Author: Don McGarry
################################################/

# Copyright (c) 2013 The MITRE Corporation. All rights reserved.
#
# NOTICE
# This software was produced for the U. S. Government
# under Contract No. FA8721-09-C-0001, and is
# subject to the Rights in Noncommercial Computer Software
# and Noncommercial Computer Software Documentation Clause
# (DFARS) 252.227-7014 (JUN 1995)

$SAPass=$Args[0];
$SQLSetupExe=$Args[1];
$SQLInstallType=$Args[2];
$SQLPID=$Args[3];
$NETSetupExe=$Args[4];
$InstallerRoot=$Args[5];
Import-Module Servermanager

$nets=Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse |
Get-ItemProperty -name Version -EA 0 |
Where { $_.PSChildName -match '^(?!S)\p{L}'} 
$netinstalled=$false
foreach($net in $nets)
{
    Write-Host $net.PSChildName
    Write-Host $net.Version
    if(($net.PSChildName -eq "FULL") -and (($net.Version -eq "4.0.30319") -or ($net.Version -eq "4.5.50938") -or ($net.Version -eq "4.5.51641")))
    {
        $netinstalled=$true
    }
}
if(!$netinstalled)
{
    Write-Host "Installing .NET 4.5 Full"
	& $NETSetupExe /q /norestart
}

#Add needed server roles
Add-WindowsFeature AS-NET-Framework, AS-Web-Support, AS-TCP-Port-Sharing, AS-WAS-Support, AS-HTTP-Activation, AS-MSMQ-Activation, Web-Static-Content, Web-Default-Doc, Web-Dir-Browsing, Web-Http-Errors, Web-Http-Redirect, Web-App-Dev, Web-Health, Web-Security, Web-Performance, Web-Mgmt-Console, Web-Scripting-Tools, Web-Mgmt-Service, Web-Mgmt-Compat, Web-WHC, MSMQ-Server, MSMQ-Directory, MSMQ-Triggers, MSMQ-HTTP-Support, MSMQ-Multicasting, WAS

if(!(Test-Path '%SystemRoot%\system32\inetsrv\rewrite.dll'))
{
	& $URLRewriteInstall /q
}

if(!(Test-Path 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server'))
{
	#If not, do the install
	if ($SQLInstallType -eq 0)
	{
		& $SQLSetupExe /ConfigurationFile=$InstallerRoot\SQL\ConfigurationFile.ini /SAPWD=$SAPass /PID=$PID
	}
	elseif ($SQLInstallType -eq 1)
	{
		& $SQLSetupExe /ConfigurationFile=$InstallerRoot\SQL\ConfigurationFile.ini /SAPWD=$SAPass
	}
	else
	{
		& $SQLSetupExe /ConfigurationFile=$InstallerRoot\SQL\ConfigurationFile.ini /SAPWD=$SAPass
	}
}